package com.sxj.corejava.code07_面向对象.bms;

/**
 * @author 石小俊
 * @date 2025年01月08日
 * 银行类
 */
public class Bank {

    // 当前银行中所有的账户信息
    static Account[] accounts = new Account[100];
    // 当前已开户的账户数量
    static int count = 0;

    /**
     * 开户,开户功能由银行实现,用户只是提供了开户所需的账户信息
     * @param account 用户提供的账户信息,相当于用户去银行开户时填写的申请单
     * @return 开户是否成功
     */
    public static boolean register(Account account) {
        // 只要当前已开户的数量小于账号数量上限就可以开户
        if (count < accounts.length) {
            accounts[count++] = account;
            return true;
        }
        return false;
    }

    /**
     * 登录
     * @param id       卡号
     * @param password 密码
     * @return 登录是否成功
     */
    public static Account login(int id, String password) {
        // 查询所有已开户的账户中是否存在与指定卡号和密码一致的账户
        for (int i = 0; i < count; i++) {
            // 取出当前迭代的元素
            Account account = accounts[i];
            // 判断卡号和密码是否相同
            if (id == account.getId() && password.equals(account.getPassword())) {
                // 如果相同,则返回对应的账户信息
                return account;
            }
        }
        // 如果没有找到,则直接返回null,说明卡号或密码错误
        return null;
    }

    /**
     * 根据卡号查询账户信息
     * @param id 卡号
     * @return 卡号所对应的账户信息
     */
    public static Account findById(int id) {
        // 查询所有已开户的账户中是否存在与指定卡号一致的账户
        for (int i = 0; i < count; i++) {
            Account account = accounts[i];
            if (id == account.getId()) {
                return account;
            }
        }
        return null;
    }
}
